from datetime import datetime
import json

class ChatModule:
    def __init__(self):
        # 聊天历史记录列表，保存每轮对话的内容
        self.chat_history = []
        # 聊天历史最大长度，超过后只保留最近的记录
        self.max_history_length = 10  # 保留最近的10条对话记录
    
    def get_context(self, current_data, device_states):
        """
        获取当前环境上下文。
        生成包含当前时间戳、传感器数据和设备状态的上下文字典，
        便于后续 AI 聊天或日志分析。
        :param current_data: 当前传感器数据
        :param device_states: 当前设备状态
        :return: 上下文字典
        """
        context = {
            'timestamp': datetime.now().isoformat(),
            'sensor_data': current_data,
            'device_states': device_states
        }
        return context
    
    def add_message(self, role, content):
        """
        添加新的对话消息。
        将一条新的消息（包括角色、内容和时间戳）加入聊天历史，
        并自动维护历史长度不超过最大值。
        :param role: 消息角色（如 user/assistant）
        :param content: 消息内容
        """
        message = {
            'role': role,
            'content': content,
            'timestamp': datetime.now().isoformat()
        }
        self.chat_history.append(message)
        
        # 保持历史记录在限定长度内，超出则只保留最新的 max_history_length 条
        if len(self.chat_history) > self.max_history_length:
            self.chat_history = self.chat_history[-self.max_history_length:]
    
    def get_chat_history(self):
        """
        获取对话历史。
        返回当前保存的所有对话消息列表。
        :return: 聊天历史列表
        """
        return self.chat_history
    
    def clear_history(self):
        """
        清空对话历史。
        将聊天历史记录列表置空。
        """
        self.chat_history = []